package spider

import (
	"encoding/json"
	"errors"

	"io/ioutil"

	"priceApi/models"
	"priceApi/utils"
	"strconv"

	"github.com/astaxie/beego"
)

type JsonGateioPriceData struct {
	Symbol string `json:"symbol"`
	Curr_b string `json:"curr_b"`
	Price  string `json:"rate"`
}

type JsonGateioPrice struct {
	Result string                `json:"result"`
	Data   []JsonGateioPriceData `json:"data"`
}

func GetGateioPrice() (map[string]float64, error) {
	beego.Debug(111)
	var jsondata JsonGateioPrice
	resp, err := utils.GetBySS("https://data.gateio.io/api2/1/marketlist")
	beego.Debug(333)
	if err != nil {
		beego.Debug("GetGateioPrice http.Get ERROR", err.Error())
		utils.SendToMail("GetGateioPrice http.Get", err.Error())
		return nil, err
	}
	input, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		beego.Debug("GetGateioPrice ioutil.ReadAll ERROR", err.Error())
		utils.SendToMail("GetGateioPrice ioutil.ReadAll", err.Error())
		return nil, err
	}
	json.Unmarshal([]byte(input), &jsondata)
	if jsondata.Result != "true" {
		return nil, errors.New("数据错误")
	}

	Price := make(map[string]float64)
	rate := models.GetRateUSDT()

	symbols := utils.GetSymbolsByConf()
	for _, v := range symbols {

		for _, value := range jsondata.Data {
			if v == value.Symbol && value.Curr_b == "USDT" {

				v2, _ := strconv.ParseFloat(value.Price, 64)

				Price[v] = v2 * rate
			}
		}
	}
	beego.Debug(222)

	return Price, nil
}
